package bsf.baseservice.businessmq.consumer;

import bsf.base.TimeSpan;

import java.util.Date;

/**
 消费者上下文
 
*/
public class ConsumerContext implements AutoCloseable
{
	/** 
	 消费者提供者
	 
	*/
	public ConsumerProvider ConsumerProvider;
	/** 
	 消费者信息
	 
	*/
	public ConsumerInfo ConsumerInfo;
	/** 
	 消费者监听器
	 
	*/
	public ReceiveMessageListener Listener;
	/** 
	 消费者内部消息队列
	 
	*/
	public ReceiveMessageQuque Quque;
	/** 
	 消费者回调信息
	 
	*/
	public ConsumerActionInfo ActionInfo;

	/** 
	 服务器标准时间(管理中心时间)
	 
	*/
	public Date getManageServerTime()
	{
		Date date = new Date();
		date.setTime(new Date().getTime() - _calibrateTimeSpan.getMilliSeconds());
		return date;
	}
	public void setManageServerTime(Date value)
	{
		_calibrateTimeSpan = new TimeSpan(new Date().getTime() - value.getTime());
	}
	private TimeSpan _calibrateTimeSpan = new TimeSpan(0); //服务器标准时间和当前服务器时间的校准时间间隔

	/** 
	 整个上下文信息是否需要重新获取启动
	 
	*/
	public boolean IsNeedReload;

	public final int getMQPathID()
	{
		if (ConsumerInfo != null && ConsumerInfo.MQPathModel != null)
		{
			return ConsumerInfo.MQPathModel.id;
		}
		else
		{
			return -1;
		}

	}

	public final String getMQPath()
	{
		if (ConsumerInfo != null && ConsumerInfo.MQPathModel != null)
		{
			return ConsumerInfo.MQPathModel.mqpath;
		}
		else
		{
			return "";
		}

	}

	public final void close()
	{
		if (Quque != null)
		{
			Quque.close();
			Quque=null;
		}
		if (Listener != null)
		{
			Listener.close();
			Listener=null;
		}

	}
}